home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / pascal / xlib.zip / XSTREAM.INT < prev    next >
Text File  |  1992-09-06  |  6KB  |  156 lines

  1. (*****************************************************************************)
  2. (*                                                                           *)
  3. (*        filename        : XSTREAM.PAS                                      *)
  4. (*        author          : Stefan Boether / Compuserve Id : 100023,275      *)
  5. (*                                                 FidoNet :  2:242/200      *)
  6. (*                                                 FidoNet :  2:243/91       *)
  7. (*                                  Internet: 100023.275@CompuServe.COM      *)
  8. (*        system          : TURBO 6.01 / TPW 1.0 / DOS 3.3 / WIN 3.1         *)
  9. (*        changes         :                                                  *)
  10. (*        when    what                                                who    *)
  11. (*---------------------------------------------------------------------------*)
  12. (*****************************************************************************)
  13. (*  Description :  Extended Stream access                                    *)
  14. (*****************************************************************************)
  15.  
  16. UNIT  XStream;  {$D-,O+}
  17.  
  18. INTERFACE
  19.  
  20. USES  Dos, Objects;
  21.  
  22. TYPE  PMemStream = ^TMemStream;
  23.       TMemStream = OBJECT ( TStream )
  24.         BuffSize : WORD;
  25.         Buffer   : POINTER;
  26.         Position : LONGINT;
  27.  
  28.         CONSTRUCTOR Init( ASize : Word );
  29.         DESTRUCTOR  Done; virtual;
  30.         FUNCTION    GetPos: LongInt; virtual;
  31.         FUNCTION    GetSize: LongInt; virtual;
  32.         PROCEDURE   Read(var Buf; Count: word); virtual;
  33.         PROCEDURE   Seek(Pos: LongInt); virtual;
  34.         PROCEDURE   Write(var Buf; Count: word); virtual;
  35.       END;
  36.  
  37.       PObjStream = ^TObjStream;
  38.       TObjStream = OBJECT ( TMemStream )
  39.           CONSTRUCTOR Init( AAddr:POINTER );
  40.           DESTRUCTOR  Done; virtual;
  41.           PROCEDURE   Write(var Buf; Count: word); virtual;
  42.       END;
  43.  
  44.       PPortStream = ^TPortStream;
  45.       TPortStream = object( TStream )
  46.         ThePort    : Integer;
  47.         TimeOut    : Byte;
  48.         OldTimeOut : Byte;
  49.         constructor Init( APort:Integer; ATimeOut:Byte);
  50.         destructor  Done; virtual;
  51.         constructor Load( var S:TStream );
  52.         procedure   Store( var S:TStream );
  53.         function    GetTimeOut:Byte; virtual;
  54.         procedure   SetTimeOut(B:Byte); virtual;
  55.         function    InitPort:Boolean; virtual;
  56.       end;
  57.  
  58. CONST Lpt1 = 1;
  59.       Lpt2 = 2;
  60.       Lpt3 = 3;
  61.       Lpt4 = 4;
  62.  
  63.       Com1 = 1;
  64.       Com2 = 2;
  65.  
  66.  
  67. TYPE  PLptStream = ^TLptStream;
  68.       TLptStream = object( TPortStream )
  69.         constructor Init( APort:Integer; ATimeOut:Byte);
  70.         constructor Load( var S:TStream );
  71.         function    GetTimeOut:Byte; virtual;
  72.         procedure   SetTimeOut(B:Byte); virtual;
  73.         procedure   Write( var Buf; Count:Word ); virtual;
  74.         function    InitPort:Boolean; virtual;
  75.       end;
  76.  
  77.       PComStream = ^TComStream;
  78.       TComStream = object( TPortStream )
  79.         ComParam  : Byte;
  80.         constructor Init( APort:Integer; ATimeOut:Byte;
  81.                           ABaud:Word; AData:Byte; AParity:Char; AStop:Byte);
  82.         constructor Load( var S:TStream );
  83.         procedure   Store( var S:TStream );
  84.         function    GetTimeOut:Byte; virtual;
  85.         procedure   SetTimeOut(B:Byte); virtual;
  86.         procedure   Write( var Buf; Count:Word ); virtual;
  87.         function    InitPort:Boolean; virtual;
  88.       end;
  89.  
  90.       PNulStream = ^TNulStream;
  91.       TNulStream = object( TStream )
  92.         Size : LongInt;
  93.         constructor Init;
  94.         function    GetSize: LongInt; VIRTUAL;
  95.         function    GetPos: LongInt; VIRTUAL;
  96.         constructor Load( var S:TStream );
  97.         procedure   Store( var S:TStream );
  98.         procedure   Write( var Buf; Count:Word ); virtual;
  99.       end;
  100.  
  101.       PCRCStream = ^TCRCStream;
  102.       TCRCStream = OBJECT(TNulStream)
  103.          CRC: Word;
  104.          CONSTRUCTOR Init;
  105.          FUNCTION    GetCRC: LongInt; VIRTUAL;
  106.          PROCEDURE   Write(VAR Buf; Count: Word); VIRTUAL;
  107.       END;
  108.  
  109.       PXmsStream   = ^TXmsStream;
  110.       TXmsStream   = OBJECT ( TStream )
  111.          Handle     : WORD;
  112.          Size       : LONGINT;
  113.          Position   : LONGINT;
  114.          Blocks     : WORD;
  115.  
  116.          CONSTRUCTOR  Init;
  117.          DESTRUCTOR   Done; virtual;
  118.          FUNCTION     GetPos: LongInt; virtual;
  119.          FUNCTION     GetSize: LongInt; virtual;
  120.          PROCEDURE    Read(var Buf; Count: word); virtual;
  121.          PROCEDURE    Seek(Pos: LongInt); virtual;
  122.          PROCEDURE    Write(var Buf; Count: word); virtual;
  123.          FUNCTION     MaxAvail : WORD;
  124.          FUNCTION     MemAvail : WORD;
  125.        PRIVATE
  126.          FUNCTION     Check( InfoCode:INTEGER ) : BOOLEAN;
  127.      END;
  128.  
  129.  
  130. CONST  RLptStream: TStreamRec = (
  131.           ObjType: 20100;
  132.           VmtLink: Ofs(TypeOf(TLptStream)^);
  133.           Load:    @TLptStream.Load;
  134.           Store:   @TLptStream.Store
  135.         );
  136.        RComStream: TStreamRec = (
  137.           ObjType: 20101;
  138.           VmtLink: Ofs(TypeOf(TComStream)^);
  139.           Load:    @TComStream.Load;
  140.           Store:   @TComStream.Store
  141.         );
  142.  
  143.        RNulStream: TStreamRec = (
  144.           ObjType: 20102;
  145.           VmtLink: Ofs(TypeOf(TNulStream)^);
  146.           Load:    @TNulStream.Load;
  147.           Store:   @TNulStream.Store
  148.         );
  149.  
  150.        ResObjAddr : Pointer = Nil;
  151.  
  152. PROCEDURE RegisterXStream;
  153.  
  154. FUNCTION  MemoryStrm( FName : PATHSTR ) : PStream;
  155.  
  156.